package com.xhh.nphm.web.controller.system;

import com.xhh.nphm.common.core.controller.BaseController;
import com.xhh.nphm.common.core.domain.AjaxResult;
import com.xhh.nphm.common.core.page.TableDataInfo;
import com.xhh.nphm.common.utils.DateUtils;
import com.xhh.nphm.system.domain.Saffiche;
import com.xhh.nphm.system.service.SafficheService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.ModelMap;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import java.io.File;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/system/mInterior/cfNotice")
public class MInteriorCfNoticeController extends BaseController {
    private final String prefix = "system/mInterior/cfNotice";

    @Autowired
    private SafficheService safficheService;

    /**
     * 进入系统公告管理列表页面
     *
     * @return 视图
     */
    @GetMapping("/afficheList")
    public ModelAndView afficheList() {
        return new ModelAndView(prefix + "/afficheList");
    }

    /**
     * 进入系统通知公告列表页面
     *
     * @return 视图
     */
    @GetMapping("/ntcList")
    public ModelAndView ntcList() {
        return new ModelAndView(prefix + "/ntcList");
    }

    /**
     * 加载系统通知公告列表数据
     *
     * @param saffiche 封装查询条件
     * @return 列表数据
     */
    @PostMapping("/ntcListJson")
    public TableDataInfo ntcListJson(Saffiche saffiche) {
        saffiche.setUserNo(getSysUser().getUserId());
        if("-1".equals(saffiche.getSortCode()) && "-请选择-".equals(saffiche.getSortName())){
            saffiche.setSortCode(null);
            saffiche.setSortName(null);
        }
        startPage();
        List<Map<String,Object>> list = safficheService.ntcListJson(getSysUser().getRoles().get(0).getRoleId().toString(),saffiche);
        return getDataTable(list);
    }

    /**
     * 加载系统公告管理列表数据
     *
     * @param saffiche 封装查询条件
     * @return 列表数据
     */
    @PostMapping("/afficheListJson")
    public TableDataInfo afficheListJson(Saffiche saffiche) {
        saffiche.setUserNo(getSysUser().getUserId());
        if("-1".equals(saffiche.getSortCode()) && "-请选择-".equals(saffiche.getSortName())){
            saffiche.setSortCode(null);
            saffiche.setSortName(null);
        }
        startPage();
        List<Map<String,Object>> list = safficheService.afficheListJson(saffiche);
        return getDataTable(list);
    }

    /**
     * 进入新增系统公告管理页面
     *
     * @return 视图
     */
    @GetMapping("/afficheAdd")
    public ModelAndView afficheAdd(ModelMap map) {
        map.put("now", DateUtils.getNowDate());
        map.put("curUser",getSysUser());
        return new ModelAndView(prefix + "/afficheAdd");
    }

    /**
     * 新增系统公告
     *
     * @param saffiche 封装提交的系统公告信息
     * @return 响应结果
     */
    @PostMapping("/afficheAdd")
    public AjaxResult afficheAdd(Saffiche saffiche) {
        saffiche.setUserNo(getSysUser().getUserId());
        return toAjax(safficheService.saveOrUpdate(saffiche));
    }


    /**
     * 进入修改系统公告管理页面
     *
     * @return 视图
     */
    @GetMapping("/afficheEdit/{id}")
    public ModelAndView afficheEdit(@PathVariable("id") Integer id,ModelMap map) {
        map.put("saffiche",safficheService.getById(id));
        map.put("areaNo",getSysUser().getAreaNo());
        map.put("deptId",getSysUser().getDeptId());
        return new ModelAndView(prefix + "/afficheEdit");
    }

    /**
     * 修改系统公告
     *
     * @param saffiche 封装提交的系统公告信息
     * @return 响应结果
     */
    @PostMapping("/afficheEdit")
    @ResponseBody
    public AjaxResult afficheEdit(@Validated Saffiche saffiche) {
        return toAjax(safficheService.saveOrUpdate(saffiche));
    }


    /**
     * 删除系统公告
     *
     * @return 响应结果
     */
    @PostMapping("/afficheRemove")
    public AjaxResult afficheRemove(String ids) {
        return toAjax(safficheService.removeByIds(Arrays.asList(ids.split(","))));
    }

    /**
     * 进入系统通知公告详情
     * @param id 系统通知公告id
     * @param map
     * @return 视图
     */
    @GetMapping("/ntcDetail/{id}")
    public ModelAndView ntcDetail(@PathVariable("id") Integer id,ModelMap map) {
        map.put("saffiche",safficheService.getById(id));
        return new ModelAndView(prefix + "/ntcDetail");
    }
}
